#ifndef __CLIENT_H__
#define __CLIENT_H__

// 导入项目头文件
#include <head.h>
#include "udp.h"
#include "tcp.h"
#include "client.h"
#include "utils.h"

// 定义宏定义
#define LOG_FILE "log/error.log" // 报错日志文件
#define SIZE 1024
#define NOW_MAX 20
#define PORT 8824 // 服务器监听的端口号
#define BUFFER_SIZE 1024 // 用于接收和发送消息的缓冲区大小
#define NAME_SIZE 20 // 用户名称的最大长度


// 错误输出宏定义，写入日志文件并显示在终端
#define ERRLOG(msg)                                                                                                           \
    do                                                                                                                        \
    {                                                                                                                         \
        time_t now = time(NULL);                                                                                              \
        char *timestr = ctime(&now);                                                                                          \
        timestr[strlen(timestr) - 1] = '\0'; /* 去掉末尾的换行符 */                                                   \
        FILE *log_file = fopen(LOG_FILE, "a");                                                                                \
        if (log_file)                                                                                                         \
        {                                                                                                                     \
            fprintf(log_file, "[%s] 错误: %s\t文件: %s\t函数: %s\t行号: %d\n\n", timestr, msg, __FILE__, __func__, __LINE__); \
            fclose(log_file);                                                                                                 \
        }                                                                                                                     \
        else                                                                                                                  \
        {                                                                                                                     \
            fprintf(stderr, "错误: 无法打开日志文件: %s\n", LOG_FILE);                                                        \
        } /* 输出到标准错误流 */                                                                                      \
        fprintf(stderr, "[%s] 错误: %s\t文件: %s\t函数: %s\t行号: %d\n", timestr, msg, __FILE__, __func__, __LINE__);         \
    } while (0)



#endif
